package com.mjf.spark.day02

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
 * 默认分区
 *  -从集合中创建RDD(makeRDD)
 *      取决于分配给应用的CPU核数
 *
 *  -读取外部文件创建RDD(textFile)
 *      math.min(取决于分配给应用的CPU核数, 2)
 */
object Spark03_Partition_default {
  def main(args: Array[String]): Unit = {

    // 创建SparkConf配置文件
    val conf = new SparkConf().setMaster("local[*]").setAppName("Spark03_Partition_default")
    // 创建SparkContext对象
    val sc = new SparkContext(conf)

    // 通过集合创建RDD
    val rdd1: RDD[Int] = sc.makeRDD(List(1, 2, 3, 4))

    // 查看分区效果
    println(rdd1.partitions.size)
//    rdd1.saveAsTextFile("D:\\code\\spark\\output")  // 8个分区

    // 通过读取外部文件创建RDD
    val rdd2: RDD[String] = sc.textFile("D:\\code\\spark\\input")

    // 查看分区效果
    println(rdd2.partitions.size)
    rdd2.saveAsTextFile("D:\\code\\spark\\output")  // 2个分区

    // 关闭连接
    sc. stop()

  }
}
